A software product typically goes through a software development life-cycle (SDLC), including, among other things, software programming or coding followed by software testing. The reliability and quality of a software impacts customer satisfaction and sales in a competitive business environment. Features like reliability, security and quality are attributed to a software when it does not have any defects or bugs. Such defects or bugs can cause feature lapse or accrue undesired deficiency.
Typically, in scenarios where a user commercially exploits software and experiences undesired functionality or defects in it, the user has to live with it or wait for the original vendor to fix it. If the defect or bug is detected before the software is deployed then the creator of the software may fix it, but if the defects are detected post-deployment (especially to a large number of users), then fixing the defects in the “already-deployed” version is challenging. When the Defects or bugs are fixed using software patches, plug-ins, or wrapper solutions. Each of these is appropriate to specific scenarios. Patches correct the defects replacing the defective portion with a corrected code. Patches are typically authored by the same source as the original software development team. Effective and efficient patches do not come from a third party, since third parties have little to no knowledge about the internal workings of the original defective software.
Wrapper solutions push the correct code into defective software, and deactivate or encapsulate the defective portion. Plug-ins tend to introduce enhancements into a software rather than actually fixing a defect in the software. Plug-ins are usually from third parties, but they do not fix software defects. Developing wrappers and plug-ins both require knowledge of the internal structure of the defective software.